-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
#110 Group Unicode symbols into browsable categories #353
base: main
Are you sure you want to change the base?
#110 Group Unicode symbols into browsable categories #353
Conversation
Thanks @ElliotRoe! I should have time to review this weekend. One quick thing now: make sure there are no |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a great start! Thank you for taking on this relatively hefty issue.
- I'm always a bit loathe to take on additional dependencies unless we're quite sure that they 1) have zero to few dependencies themselves, 2) don't have lurking accessibility and localization flaws, and 3) are actively maintained. I did a cursory review of fuzzysort and virtual list and they seem to meet these criteria relatively well, but I think there's some due diligence in order, especially on item 2.
- The PR has some TypeScript and Svelte errors and warnings. Run
npm run check
and you'll see some accessibility warnings that need to be resolved and some missing type declarations. - All of the labels need to be localized; that means declaring new strings in
UITexts.ts
and creating placeholders in all supported locales, includingen-US
,zh-CN
, andes-MX
, and retrieving strings from the active locale. You'll see other patterns that use the $locale store defined inDatabase.ts
- Wrapping divs are fine for styling; the Svelte way is the HTML/CSS way; there are no special toolkit specific patterns, just the patterns we're using in this project.
- Creating a smaller spacing variable is probably a good idea, given how much we're duplicating that pattern. But you're welcome to open a separate issue for that, since it's out of scope for this issue.
- For recently used glyphs, I think the best place to store recently used glyphs would be at the project level, since that's where recency is likely to be a good indicator of relevance. Another option, which is a slight deviation from the design, is to extract them from the project itself, and the undo history, rather than persisting a history. I think it would be fine to scope it down to that for now, and potentially persist it at the project level as a later enhancement.
- The vertical alignment of the search box should probably be baseline aligned rather than centered, since it's hard to tell that it is searching the view.
- The hit area for emojis should probably be larger, with reduced padding between. They're hard to tap and click.
- The background on the "Operators" and "Recently Used" labels breaks convention; no other parts of the interface have shading behind a header label. Go ahead and remove that.
- The group chooser isn't not keyboard accessible. Space activates the pop menu, but there is no way to change the group after that. The control should be WCAG 2.2 compliant.
- Typing in the search box grows the search box but this shrinks the search results box. I suggest not growing the search box, keeping the layout fixed.
- It's not clear what the recently used values are currently coming from; maybe they're just placeholders?
- There should be feedback when the search results are empty. Without this, when changing to the category, the results are often empty, since nothing matches the search.
- Definitely need to resolve the performance issues with the other category.
- Using the emoji specification in unicode instead of the proposed category is fine; I think the designers didn't quite capture everything.
Thanks for the great start on this!
Thanks so much for your detailed feedback! I will keep working on the rest of the deliverables for the issue and implement your feedback. I would expect to be in a good place for another round of feedback in about two weeks. Thanks! |
Hi @amyjko. Just following up with a quick update and a clarifying question about your feedback regarding search bar alignment. I'm behind where I thought I would be two weeks ago, but have continued to make progress on the issue which I'm tracking above in the body of the PR. In regards to your comment, "The vertical alignment of the search box should probably be baseline aligned rather than centered, since it's hard to tell that it is searching the view.", could you modify the original design Figma or give a quick sketch of what the alignment should look like? I'm not sure what you mean by this. I understand baseline is a CSS option for flex box item aligning, but changing the alignment from center to baseline puts the bar at the very bottom of the view which I'm not sure is what you intended. I'll check in again in around two weeks! I can't promise that the PR will be in a good place for another round of feedback then, as my spare dev time is decreasing with the semester ramping up but I'll continue to chip away at the issue and track my progress above. I've been having tons of fun coding so far! Thanks! |
Thanks for the update @ElliotRoe! I don't have access to the original Figma sketches to modify them, so I'll try to clarify here with words. Visually, I think vertically aligning the search field at the top of the container (with the recently used row), rather than aligned with the top of the emoji grid, would make more sense semantically, because the default operators and recently used emojis disappear upon search. If the default operators and recently used were persistent, even after search, then it might make more sense to vertically align it with just the grid. When I said "baseline", I was more referring to how to vertically align: ideally, the search box's baseline and the row of recently used emojis would be vertically aligned, at the top of the container. I can add a new sketch if this isn't clear. |
Gotcha, that clears it up. Thanks! |
Hi! Just checking in with a quick update. I was able to chip away at most of the trivial tasks for the ticket. With the help of my wonderful labmate Grace Barkhuff, I've begun implementing a WCAG 2.2 compliant combobox for the drop-down menu. Additionally, I have also started on modifying the necessary JSON project schemas to enable the recently used feature for Firebase. I hope to have these larger features of the ticket finished by mid April. Thanks! -Elliot |
Pinging here that this ticket is still on my radar! More commits will roll in this coming weekend. Thanks. |
Excellent, we look forward to it! |
Deleted lock file and completed synced with upstream lock file. Added on click toggle listener
Hello @amyjko! Combobox ui component and recently used feature have been completed. The last larger task that I need to complete is the fixing of the "other" category scrolling issues then I'll just have some final clean up and localization tasks. I'll quickly go over my recently used implementation as it has the largest design consequences that you may want to weight in on. As you suggested, I implemented the recently used glyphs feature at the project level. I added a new array of strings as a property to the projectSchemaV2 zod schema, then modified the appropriate helper functions to account for the new property. I had two questions:
Thanks, shooting to completely finish this ticket by the end of the school year (may 5) |
Exciting progress, thanks @ElliotRoe.
|
Quick update about my work on this ticket as I'd like to document my work on this sub-issue so far. I've been diving into the scrolling performance issues which is particularly seen when scrolling the "other" category because of it's large size. I've gone through several steps to localize the issue:
Conclusion: It seems like the complex nature of the Button and TokenView components are causing the slow down as 100s of components must be rendered over a couple seconds at max scroll speed. Possible SolutionsHere are some solutions I'll be exploring to fix the issue
My current plan is move forward with solution 2 and implement a way to limit scrolling back up as it seems the most simple. Of course, open to suggestions and thoughts for other solutions too. Thanks |
Thanks for digging into the performance issues in detail here; scale is tricky, no matter how zippy Svelte is! (It will be getting zippier with v5, but probably not enough to address this scale). From a UX perspective, I think following pagination conventions (options 2 and 3) seem most ideal, since they will be familiar. The only alternative would be a raw string glyph instead of interactive component, and then handing events at the container level instead of the glyph level, avoiding |
Gotcha, that makes sense. I would be happy to tackle creating a lightweight scrollable component (seems super fun to build) that meet those specifications, especially if you feel that it would be useful and reusable in the larger context of the code base. However, I'm hesitant to continue to add to the list of tasks in this ticket. I think for now I'll implement some pagination options you mentioned above. Then, open a separate ticket detailing the requirements of the light weight scroll components, if needed. |
Pagination sounds reasonable for now. Thank you for the steady work on this! |
Just checking in on this PR. Think you'll want to finish it up at some point? |
Draft PR for issue #110
Changes
Questions
calc(var(--wordplay-spacing)/2)
was being used in multiple areas. I also included it in my label and dropdown design. It is useful asvar(--wordplay-spacing)
can be too large for some inner padding of components. Should this be refactored into it's own separate CSS variable?Known Issues
Hacky solution for including recently used bar into the scrollable virtual listTo Do
The following are the remaining deliverables in the scope of this ticket (I believe):
Round 1 Feedback